/**
 *顺序表基本操作函数库
 */
#define InitSize 100
#define ElemType int

typedef struct  {
    ElemType *data;
    int Maxsize,Lenght;
}SeqList;
//初始化 顺序表
bool InitList(SeqList * L){
    L->data = (ElemType *)malloc(sizeof(ElemType)*InitSize);
    if (NULL == L->data){
        return false;
    }
    L->Maxsize = InitSize;
    L->Lenght = 0;
    return true;
}
//尾部添加
bool listAppend(SeqList * L,ElemType e){
    if (L->Lenght>=L->Maxsize)
        return false;
    L->data[L->Lenght] = e;
    L->Lenght ++;
    return true;
}
// 插入一个数据10
bool ListInstert(SeqList * L,int i,ElemType e){
    if (i<1||i>L->Lenght+1){
        return false;
    }
    if (L->Lenght >= L->Maxsize){
        return false;
    }
    for (int j = L->Lenght; j >= i ; j--){
        L->data[j] = L->data[j-1];      //元素依次后移
    }
    L->data[i-1] = e;
    L->Lenght ++;
    return true;
}
// 遍历打印
void printList(SeqList *L){
    if (L->Lenght == 0)
        printf("the list is Empty\n");
    for (int i = 0; i < L->Lenght; ++i)
        printf("%d ", L->data[i]);
    printf("\n");
}
// 返回长度
int Lenght(SeqList *L){
    return L->Lenght;
}
//删一个数据
bool ListDelete(SeqList *L ,int i,ElemType * e){
    if (i<1||i>L->Lenght+1){
        return false;
    }
    *e =L->data[i-1];
    for (int j = i-1; j < L->Lenght-1; j++){
         L->data[j] = L->data[j+1];
    }
    L->Lenght --;
    return true;
}
// 查找某数据的位置
int LocateElem(SeqList *L,ElemType e){
    int i;
    for (i = 0; i < L->Lenght; ++i){
        if (L->data[i]==e){
            return i+1;
        }
    }
    return 0;
}
// 排序 冒泡
int ListSort(SeqList *L){
    if(L->Lenght == 0)
        return false;

    int temp;
    for(int i = 0; i < L->Lenght; ++i) {
        for(int j = 0; j < i; ++j) {
            if(L->data[i] < L->data[j]) {
                temp = L->data[i];
                L->data[i] = L->data[j];
                L->data[j] = temp;
            }
        }
    }
    return true;
}